Speak!
SAP kann sprechen. Mit der Microsoft Speech API 5.3
Auf der Seite http://abapdn.blogspot.com bin ich auf folgenden interessanten Code gestoßen:
INCLUDE ole2incl. DATA : v_objole TYPE ole2_object, v_objolevoice TYPE ole2_object, v_strtotalk TYPE string. CREATE OBJECT v_objolevoice 'SAPI.SpVoice'. SET PROPERTY OF v_objolevoice 'Volume' = 80. SET PROPERTY OF v_objolevoice 'Rate' = -1. v_strtotalk = 'This is great'. CALL METHOD OF v_objolevoice 'Speak' = v_objole EXPORTING #1 = v_strtotalk. FREE: v_objolevoice,v_objole.
Und SAP kann sprechen… Leider ist es mir nicht gelungen, andere Stimmen zu aktivieren. Es spricht standardmäßig “Anna” (“Mary” laut Doku). Es müsste aber auch noch “Mike” vorhanden sein.
Get Voice
Mit diesem Code-Schnipsel kann man die eingestellte Stimme ermitteln.
DATA v_voicename TYPE string. DATA v_voice TYPE ole2_object. GET PROPERTY OF v_objolevoice 'Voice' = v_voice. CALL METHOD OF v_voice 'GetDescription' = v_voicename.
Umgestellt werden kann die Stimme leider nicht, denn dafür müsste man per OLE ein indiziertes Array ansprechen, was aber nicht geht. Aufgrund von Lizenzproblemen ist häufig aber auch nur eine Sprache (und Stimme) installiert.
Asynchrone Sprachausgabe
In der Defaulteinstellung wird die Verarbeitung erst fort gesetzt, wenn die Sprachausgabe beendet ist. Mit dem Parameter SVSFlagAsync der Methode SPEAK kann die Sprachausgabe jedoch auch asynchron erfolgen. Das ist beispielsweise dann sinnvoll, wenn eine per MESSAGE ausgegebene Meldung auch gesprochen werden soll. Die Meldung sollte dann natürlich nicht erst erscheinen, wenn sie bereits vorab einmal komplett gesprochen wurde…
CALL METHOD OF v_objolevoice 'Speak' = v_objolevoice EXPORTING #1 = v_strtotalk #2 = 1. "SVSFlagsAsync
Links
Hier der Link zum Artikel:
http://abapdn.blogspot.com/2010/09/sap-knows-how-to-speak.html
Und hier der Link zur API-Dokumentation:
http://msdn.microsoft.com/en-us/library/ms723614(v=vs.85).aspx
Kürzer!
Hier noch eine kürzere Variante von Nalon:
DATA ovoice TYPE ole2_object. CREATE OBJECT ovoice 'SAPI.SpVoice'. IF sy-subrc = 0. CALL METHOD OF ovoice 'Speak' EXPORTING #1 = 'Ich will sprechen'. ENDIF.
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024